package com.dragon.modules.yuegou.entity.wallet;

import com.baomidou.mybatisplus.annotation.TableName;
import com.dragon.modules.yuegou.enums.CurrencyType;
import com.dragon.modules.yuegou.enums.wallet.MerchantTradeOrderType;
import com.dragon.modules.yuegou.enums.wallet.MerchantTradeProcessState;
import com.dragon.modules.yuegou.enums.wallet.MerchantTradeType;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 商户交易（在商户角度的交易流水）实体类<br>
 * 对应的表为：walt_merchant_trade<br>
 * 
 * @author pbuilder generated
 * @date 2020-04-28 17:05:29
 * @company sgy
 * @version 2.0
 */
@TableName("walt_merchant_trade")
@ApiModel(description = "商户交易（在商户角度的交易流水）")
public class MerchantTradeEntity {

    /** 交易ID（与分表中的ID保持一致） */
	@ApiModelProperty("交易ID（与分表中的ID保持一致）")
	protected String id;

    /** 商户ID */
	@ApiModelProperty("商户ID")
	protected String merchantId;

    /** 商户钱包ID */
	@ApiModelProperty("商户钱包ID")
	protected String merchantWalletId;

    /** 收入金额（正数表示收入，负数表示支出） */
	@ApiModelProperty("收入金额（正数表示收入，负数表示支出）")
	protected BigDecimal amount;

    /** 交易前余额 */
	@ApiModelProperty("交易前余额")
	protected BigDecimal amountBefore;

    /** 交易后余额 */
	@ApiModelProperty("交易后余额")
	protected BigDecimal amountAfter;

    /** [全局枚举]币种：0-悦币-YUE_COIN、1-福利卡-YUE_CARD_GRANTED、2-预付卡-YUE_CARD_BOUGHT、3-微信-WECHAT、4-支付宝-ALIPAY */
	@ApiModelProperty("[全局枚举]币种：0-悦币-YUE_COIN、1-福利卡-YUE_CARD_GRANTED、2-预付卡-YUE_CARD_BOUGHT、3-微信-WECHAT、4-支付宝-ALIPAY")
	protected CurrencyType currencyType;

    /** [枚举]类型：0-扫码-SCAN_PAY、1-提货-PICK_UP、2-退款-REFUND、3-提现-WITHDRAW、4-购买-BUY、5-手续费-POUNDAGE、6-运费-FREIGHT、7-悦卡结算-YUECARD */
	@ApiModelProperty("[枚举]类型：0-扫码-SCAN_PAY、1-提货-PICK_UP、2-退款-REFUND、3-提现-WITHDRAW、4-购买-BUY、5-手续费-POUNDAGE、6-运费-FREIGHT、7-悦卡结算-YUECARD")
	protected MerchantTradeType type;

    /** 订单号 */
	@ApiModelProperty("订单号")
	protected String orderNo;

    /** 交易备注 */
	@ApiModelProperty("交易备注")
	protected String remarks;

    /** 交易时间 */
	@ApiModelProperty("交易时间")
	protected LocalDateTime createdTime;

    /** 悦卡模板ID（商户收入悦卡时存在） */
	@ApiModelProperty("悦卡模板ID（商户收入悦卡时存在）")
	protected String cardTemplateId;

    /** 单品id 核销时存入 */
	@ApiModelProperty("单品id 核销时存入")
	protected String goodsId;

    /** 手续费 */
	@ApiModelProperty("手续费")
	protected BigDecimal amountPoundage;

    /** [枚举]处理状态：0-未处理-UNPROCESS、1-已处理-PROCESSED */
	@ApiModelProperty("[枚举]处理状态：0-未处理-UNPROCESS、1-已处理-PROCESSED")
	protected MerchantTradeProcessState processState;

    /** [枚举]类型：0-购物订单-BUY、1-扫码支付-SCAN_PAY、2-停车支付-PARK、3-商户停车券-MERCHANT_COUPON_BUY、4-购买悦卡-CARD_BUY、5-充值悦币-RECHARGE_COIN、6-仪表充值-DOORNO_RECHARGE、7-商户仪表充值-MERCHANT_DOORNO_RECHARGE、8-商户会员等级充值-MERCHANT_LEVEL_BUY、9-疯狂砍价-BARGAIN、10-秒杀-SECKILL、11-限时折扣-LIMIT_SALES、12-积分兑换-POINTS、13-购买套餐-MEAL、14-全民拼团-GROUPON、15-抽奖-LOTTERY、16-物业缴费-PROPERTY_PAY_COST、17-商户物业缴费-MERCHANT_PROPERTY_PAY_COST、18-配送到家-DELIVERY_TO_HOME */
	@ApiModelProperty("[枚举]类型：0-购物订单-BUY、1-扫码支付-SCAN_PAY、2-停车支付-PARK、3-商户停车券-MERCHANT_COUPON_BUY、4-购买悦卡-CARD_BUY、5-充值悦币-RECHARGE_COIN、6-仪表充值-DOORNO_RECHARGE、7-商户仪表充值-MERCHANT_DOORNO_RECHARGE、8-商户会员等级充值-MERCHANT_LEVEL_BUY、9-疯狂砍价-BARGAIN、10-秒杀-SECKILL、11-限时折扣-LIMIT_SALES、12-积分兑换-POINTS、13-购买套餐-MEAL、14-全民拼团-GROUPON、15-抽奖-LOTTERY、16-物业缴费-PROPERTY_PAY_COST、17-商户物业缴费-MERCHANT_PROPERTY_PAY_COST、18-配送到家-DELIVERY_TO_HOME")
	protected MerchantTradeOrderType orderType;

    /** 实际交易金额 */
	@ApiModelProperty("实际交易金额")
	protected BigDecimal realAmount;

	/**
	 * 构造一个空商户交易（在商户角度的交易流水）实体对象
	 */
	public MerchantTradeEntity(){
		super();
	}

	/**
	 * 依据其它对象的信息构造一个商户交易（在商户角度的交易流水）实体对象
	 * 
	 * @param other 其它对象
	 */
	public MerchantTradeEntity(MerchantTradeEntity other){
		super();
     	this.id = other.id;
     	this.merchantId = other.merchantId;
     	this.merchantWalletId = other.merchantWalletId;
     	this.amount = other.amount;
     	this.amountBefore = other.amountBefore;
     	this.amountAfter = other.amountAfter;
     	this.currencyType = other.currencyType;
     	this.type = other.type;
     	this.orderNo = other.orderNo;
     	this.remarks = other.remarks;
     	this.createdTime = other.createdTime;
     	this.cardTemplateId = other.cardTemplateId;
     	this.goodsId = other.goodsId;
     	this.amountPoundage = other.amountPoundage;
     	this.processState = other.processState;
     	this.orderType = other.orderType;
     	this.realAmount = other.realAmount;
	}


	/**
	 * 获取交易ID（与分表中的ID保持一致）
	 * 
	 * @return id 交易ID（与分表中的ID保持一致）
	 */
	public String getId() {
		return id;
	}
  	
	/**
	 * 设置交易ID（与分表中的ID保持一致）
	 * 
	 * @param id 交易ID（与分表中的ID保持一致）
	 */
	public void setId(String id) {
		this.id = id;
	}

	/**
	 * 获取商户ID
	 * 
	 * @return merchantId 商户ID
	 */
	public String getMerchantId() {
		return merchantId;
	}
  	
	/**
	 * 设置商户ID
	 * 
	 * @param merchantId 商户ID
	 */
	public void setMerchantId(String merchantId) {
		this.merchantId = merchantId;
	}

	/**
	 * 获取商户钱包ID
	 * 
	 * @return merchantWalletId 商户钱包ID
	 */
	public String getMerchantWalletId() {
		return merchantWalletId;
	}
  	
	/**
	 * 设置商户钱包ID
	 * 
	 * @param merchantWalletId 商户钱包ID
	 */
	public void setMerchantWalletId(String merchantWalletId) {
		this.merchantWalletId = merchantWalletId;
	}

	/**
	 * 获取收入金额（正数表示收入，负数表示支出）
	 * 
	 * @return amount 收入金额（正数表示收入，负数表示支出）
	 */
	public BigDecimal getAmount() {
		return amount;
	}
  	
	/**
	 * 设置收入金额（正数表示收入，负数表示支出）
	 * 
	 * @param amount 收入金额（正数表示收入，负数表示支出）
	 */
	public void setAmount(BigDecimal amount) {
		this.amount = amount;
	}

	/**
	 * 获取交易前余额
	 * 
	 * @return amountBefore 交易前余额
	 */
	public BigDecimal getAmountBefore() {
		return amountBefore;
	}
  	
	/**
	 * 设置交易前余额
	 * 
	 * @param amountBefore 交易前余额
	 */
	public void setAmountBefore(BigDecimal amountBefore) {
		this.amountBefore = amountBefore;
	}

	/**
	 * 获取交易后余额
	 * 
	 * @return amountAfter 交易后余额
	 */
	public BigDecimal getAmountAfter() {
		return amountAfter;
	}
  	
	/**
	 * 设置交易后余额
	 * 
	 * @param amountAfter 交易后余额
	 */
	public void setAmountAfter(BigDecimal amountAfter) {
		this.amountAfter = amountAfter;
	}

	/**
	 * 获取[全局枚举]币种：0-悦币-YUE_COIN、1-福利卡-YUE_CARD_GRANTED、2-预付卡-YUE_CARD_BOUGHT、3-微信-WECHAT、4-支付宝-ALIPAY
	 * 
	 * @return currencyType [全局枚举]币种：0-悦币-YUE_COIN、1-福利卡-YUE_CARD_GRANTED、2-预付卡-YUE_CARD_BOUGHT、3-微信-WECHAT、4-支付宝-ALIPAY
	 */
	public CurrencyType getCurrencyType() {
		return currencyType;
	}
  	
	/**
	 * 设置[全局枚举]币种：0-悦币-YUE_COIN、1-福利卡-YUE_CARD_GRANTED、2-预付卡-YUE_CARD_BOUGHT、3-微信-WECHAT、4-支付宝-ALIPAY
	 * 
	 * @param currencyType [全局枚举]币种：0-悦币-YUE_COIN、1-福利卡-YUE_CARD_GRANTED、2-预付卡-YUE_CARD_BOUGHT、3-微信-WECHAT、4-支付宝-ALIPAY
	 */
	public void setCurrencyType(CurrencyType currencyType) {
		this.currencyType = currencyType;
	}

	/**
	 * 获取[枚举]类型：0-扫码-SCAN_PAY、1-提货-PICK_UP、2-退款-REFUND、3-提现-WITHDRAW、4-购买-BUY、5-手续费-POUNDAGE、6-运费-FREIGHT、7-悦卡结算-YUECARD
	 * 
	 * @return type [枚举]类型：0-扫码-SCAN_PAY、1-提货-PICK_UP、2-退款-REFUND、3-提现-WITHDRAW、4-购买-BUY、5-手续费-POUNDAGE、6-运费-FREIGHT、7-悦卡结算-YUECARD
	 */
	public MerchantTradeType getType() {
		return type;
	}
  	
	/**
	 * 设置[枚举]类型：0-扫码-SCAN_PAY、1-提货-PICK_UP、2-退款-REFUND、3-提现-WITHDRAW、4-购买-BUY、5-手续费-POUNDAGE、6-运费-FREIGHT、7-悦卡结算-YUECARD
	 * 
	 * @param type [枚举]类型：0-扫码-SCAN_PAY、1-提货-PICK_UP、2-退款-REFUND、3-提现-WITHDRAW、4-购买-BUY、5-手续费-POUNDAGE、6-运费-FREIGHT、7-悦卡结算-YUECARD
	 */
	public void setType(MerchantTradeType type) {
		this.type = type;
	}

	/**
	 * 获取订单号
	 * 
	 * @return orderNo 订单号
	 */
	public String getOrderNo() {
		return orderNo;
	}
  	
	/**
	 * 设置订单号
	 * 
	 * @param orderNo 订单号
	 */
	public void setOrderNo(String orderNo) {
		this.orderNo = orderNo;
	}

	/**
	 * 获取交易备注
	 * 
	 * @return remarks 交易备注
	 */
	public String getRemarks() {
		return remarks;
	}
  	
	/**
	 * 设置交易备注
	 * 
	 * @param remarks 交易备注
	 */
	public void setRemarks(String remarks) {
		this.remarks = remarks;
	}

	/**
	 * 获取交易时间
	 * 
	 * @return createdTime 交易时间
	 */
	public LocalDateTime getCreatedTime() {
		return createdTime;
	}
  	
	/**
	 * 设置交易时间
	 * 
	 * @param createdTime 交易时间
	 */
	public void setCreatedTime(LocalDateTime createdTime) {
		this.createdTime = createdTime;
	}

	/**
	 * 获取悦卡模板ID（商户收入悦卡时存在）
	 * 
	 * @return cardTemplateId 悦卡模板ID（商户收入悦卡时存在）
	 */
	public String getCardTemplateId() {
		return cardTemplateId;
	}
  	
	/**
	 * 设置悦卡模板ID（商户收入悦卡时存在）
	 * 
	 * @param cardTemplateId 悦卡模板ID（商户收入悦卡时存在）
	 */
	public void setCardTemplateId(String cardTemplateId) {
		this.cardTemplateId = cardTemplateId;
	}

	/**
	 * 获取单品id 核销时存入
	 * 
	 * @return goodsId 单品id 核销时存入
	 */
	public String getGoodsId() {
		return goodsId;
	}
  	
	/**
	 * 设置单品id 核销时存入
	 * 
	 * @param goodsId 单品id 核销时存入
	 */
	public void setGoodsId(String goodsId) {
		this.goodsId = goodsId;
	}

	/**
	 * 获取手续费
	 * 
	 * @return amountPoundage 手续费
	 */
	public BigDecimal getAmountPoundage() {
		return amountPoundage;
	}
  	
	/**
	 * 设置手续费
	 * 
	 * @param amountPoundage 手续费
	 */
	public void setAmountPoundage(BigDecimal amountPoundage) {
		this.amountPoundage = amountPoundage;
	}

	/**
	 * 获取[枚举]处理状态：0-未处理-UNPROCESS、1-已处理-PROCESSED
	 * 
	 * @return processState [枚举]处理状态：0-未处理-UNPROCESS、1-已处理-PROCESSED
	 */
	public MerchantTradeProcessState getProcessState() {
		return processState;
	}
  	
	/**
	 * 设置[枚举]处理状态：0-未处理-UNPROCESS、1-已处理-PROCESSED
	 * 
	 * @param processState [枚举]处理状态：0-未处理-UNPROCESS、1-已处理-PROCESSED
	 */
	public void setProcessState(MerchantTradeProcessState processState) {
		this.processState = processState;
	}

	/**
	 * 获取[枚举]类型：0-购物订单-BUY、1-扫码支付-SCAN_PAY、2-停车支付-PARK、3-商户停车券-MERCHANT_COUPON_BUY、4-购买悦卡-CARD_BUY、5-充值悦币-RECHARGE_COIN、6-仪表充值-DOORNO_RECHARGE、7-商户仪表充值-MERCHANT_DOORNO_RECHARGE、8-商户会员等级充值-MERCHANT_LEVEL_BUY、9-疯狂砍价-BARGAIN、10-秒杀-SECKILL、11-限时折扣-LIMIT_SALES、12-积分兑换-POINTS、13-购买套餐-MEAL、14-全民拼团-GROUPON、15-抽奖-LOTTERY、16-物业缴费-PROPERTY_PAY_COST、17-商户物业缴费-MERCHANT_PROPERTY_PAY_COST、18-配送到家-DELIVERY_TO_HOME
	 * 
	 * @return orderType [枚举]类型：0-购物订单-BUY、1-扫码支付-SCAN_PAY、2-停车支付-PARK、3-商户停车券-MERCHANT_COUPON_BUY、4-购买悦卡-CARD_BUY、5-充值悦币-RECHARGE_COIN、6-仪表充值-DOORNO_RECHARGE、7-商户仪表充值-MERCHANT_DOORNO_RECHARGE、8-商户会员等级充值-MERCHANT_LEVEL_BUY、9-疯狂砍价-BARGAIN、10-秒杀-SECKILL、11-限时折扣-LIMIT_SALES、12-积分兑换-POINTS、13-购买套餐-MEAL、14-全民拼团-GROUPON、15-抽奖-LOTTERY、16-物业缴费-PROPERTY_PAY_COST、17-商户物业缴费-MERCHANT_PROPERTY_PAY_COST、18-配送到家-DELIVERY_TO_HOME
	 */
	public MerchantTradeOrderType getOrderType() {
		return orderType;
	}
  	
	/**
	 * 设置[枚举]类型：0-购物订单-BUY、1-扫码支付-SCAN_PAY、2-停车支付-PARK、3-商户停车券-MERCHANT_COUPON_BUY、4-购买悦卡-CARD_BUY、5-充值悦币-RECHARGE_COIN、6-仪表充值-DOORNO_RECHARGE、7-商户仪表充值-MERCHANT_DOORNO_RECHARGE、8-商户会员等级充值-MERCHANT_LEVEL_BUY、9-疯狂砍价-BARGAIN、10-秒杀-SECKILL、11-限时折扣-LIMIT_SALES、12-积分兑换-POINTS、13-购买套餐-MEAL、14-全民拼团-GROUPON、15-抽奖-LOTTERY、16-物业缴费-PROPERTY_PAY_COST、17-商户物业缴费-MERCHANT_PROPERTY_PAY_COST、18-配送到家-DELIVERY_TO_HOME
	 * 
	 * @param orderType [枚举]类型：0-购物订单-BUY、1-扫码支付-SCAN_PAY、2-停车支付-PARK、3-商户停车券-MERCHANT_COUPON_BUY、4-购买悦卡-CARD_BUY、5-充值悦币-RECHARGE_COIN、6-仪表充值-DOORNO_RECHARGE、7-商户仪表充值-MERCHANT_DOORNO_RECHARGE、8-商户会员等级充值-MERCHANT_LEVEL_BUY、9-疯狂砍价-BARGAIN、10-秒杀-SECKILL、11-限时折扣-LIMIT_SALES、12-积分兑换-POINTS、13-购买套餐-MEAL、14-全民拼团-GROUPON、15-抽奖-LOTTERY、16-物业缴费-PROPERTY_PAY_COST、17-商户物业缴费-MERCHANT_PROPERTY_PAY_COST、18-配送到家-DELIVERY_TO_HOME
	 */
	public void setOrderType(MerchantTradeOrderType orderType) {
		this.orderType = orderType;
	}

	/**
	 * 获取实际交易金额
	 * 
	 * @return realAmount 实际交易金额
	 */
	public BigDecimal getRealAmount() {
		return realAmount;
	}
  	
	/**
	 * 设置实际交易金额
	 * 
	 * @param realAmount 实际交易金额
	 */
	public void setRealAmount(BigDecimal realAmount) {
		this.realAmount = realAmount;
	}

    public String toString() {
		return new StringBuilder().append("MerchantTradeEntity{").
			append("id=").append(id).
			append(",merchantId=").append(merchantId).
			append(",merchantWalletId=").append(merchantWalletId).
			append(",amount=").append(amount).
			append(",amountBefore=").append(amountBefore).
			append(",amountAfter=").append(amountAfter).
			append(",currencyType=").append(currencyType).
			append(",type=").append(type).
			append(",orderNo=").append(orderNo).
			append(",remarks=").append(remarks).
			append(",createdTime=").append(createdTime).
			append(",cardTemplateId=").append(cardTemplateId).
			append(",goodsId=").append(goodsId).
			append(",amountPoundage=").append(amountPoundage).
			append(",processState=").append(processState).
			append(",orderType=").append(orderType).
			append(",realAmount=").append(realAmount).
			append('}').toString();
    }

	/**
	 * 复制对象
	 * 
	 * @return 复制后的新实体对象
	 */
	public MerchantTradeEntity copy() {
		return new MerchantTradeEntity(this);
	}

    /** 交易ID（与分表中的ID保持一致） */
	public static final String COL_ID = "id";

    /** 商户ID */
	public static final String COL_MERCHANT_ID = "merchant_id";

    /** 商户钱包ID */
	public static final String COL_MERCHANT_WALLET_ID = "merchant_wallet_id";

    /** 收入金额（正数表示收入，负数表示支出） */
	public static final String COL_AMOUNT = "amount";

    /** 交易前余额 */
	public static final String COL_AMOUNT_BEFORE = "amount_before";

    /** 交易后余额 */
	public static final String COL_AMOUNT_AFTER = "amount_after";

    /** [全局枚举]币种：0-悦币-YUE_COIN、1-福利卡-YUE_CARD_GRANTED、2-预付卡-YUE_CARD_BOUGHT、3-微信-WECHAT、4-支付宝-ALIPAY */
	public static final String COL_CURRENCY_TYPE = "currency_type";

    /** [枚举]类型：0-扫码-SCAN_PAY、1-提货-PICK_UP、2-退款-REFUND、3-提现-WITHDRAW、4-购买-BUY、5-手续费-POUNDAGE、6-运费-FREIGHT、7-悦卡结算-YUECARD */
	public static final String COL_TYPE = "type";

    /** 订单号 */
	public static final String COL_ORDER_NO = "order_no";

    /** 交易备注 */
	public static final String COL_REMARKS = "remarks";

    /** 交易时间 */
	public static final String COL_CREATED_TIME = "created_time";

    /** 悦卡模板ID（商户收入悦卡时存在） */
	public static final String COL_CARD_TEMPLATE_ID = "card_template_id";

    /** 单品id 核销时存入 */
	public static final String COL_GOODS_ID = "goods_id";

    /** 手续费 */
	public static final String COL_AMOUNT_POUNDAGE = "amount_poundage";

    /** [枚举]处理状态：0-未处理-UNPROCESS、1-已处理-PROCESSED */
	public static final String COL_PROCESS_STATE = "process_state";

    /** [枚举]类型：0-购物订单-BUY、1-扫码支付-SCAN_PAY、2-停车支付-PARK、3-商户停车券-MERCHANT_COUPON_BUY、4-购买悦卡-CARD_BUY、5-充值悦币-RECHARGE_COIN、6-仪表充值-DOORNO_RECHARGE、7-商户仪表充值-MERCHANT_DOORNO_RECHARGE、8-商户会员等级充值-MERCHANT_LEVEL_BUY、9-疯狂砍价-BARGAIN、10-秒杀-SECKILL、11-限时折扣-LIMIT_SALES、12-积分兑换-POINTS、13-购买套餐-MEAL、14-全民拼团-GROUPON、15-抽奖-LOTTERY、16-物业缴费-PROPERTY_PAY_COST、17-商户物业缴费-MERCHANT_PROPERTY_PAY_COST、18-配送到家-DELIVERY_TO_HOME */
	public static final String COL_ORDER_TYPE = "order_type";

    /** 实际交易金额 */
	public static final String COL_REAL_AMOUNT = "real_amount";
}
